package com.leyou.item.sevice;

import com.leyou.common.vo.PageResult;
import com.leyou.item.dto.SkuDTO;
import com.leyou.item.dto.SpuDTO;
import com.leyou.item.dto.SpuDetailDTO;

import java.util.List;
import java.util.Map;

public interface GoodsService {
    /**
     * 商品列表查询
     */
    PageResult<SpuDTO> queryPage(Integer page, Integer rows, String key, Boolean saleable);

    void saveGoods(SpuDTO spuDTO);

    void updateSaleable(Long id, Boolean saleable);

    /**
     *
     * @param id
     * @return
     */
    SpuDetailDTO querySpuDetailBySpuId(Long id);
    /**
     *  基于spuId查询sku列表
     */
    List<SkuDTO> querySkuBySpuId(Long id);

    void updateGoods(SpuDTO spuDTO);

    /**
     * 根据spuid查询spu 、spuDetail、skus
     */
    SpuDTO querySpuBySpuId(Long id);
    /**
     * 基于sku的id集合查询sku列表数据
     * @param ids
     * @return
     */
    List<SkuDTO> querySkuListByIds(List<Long> ids);

    /**
     * 扣减库存
     */
    void updateStock(Map<Long, Integer> skuMap);

    /**
     * 加库存
     * @param skuMap 商品id及数量的map
     */
    void plusStock(Map<Long, Integer> skuMap);
}
